using System;
using System.Collections.Generic;

namespace MediaFramework
{
	public interface IProducerFilter
	{
		/// <summary>
		/// The output type of this filter.  A single filter only has one possible output.
		/// </summary>
		/// <value>
		/// The possible outputs.
		/// </value>
		IMediaProperties OutputType { get; }

		/// <summary>
		/// Allows another filter in the graph to subscribe to receive this media type.  Once the graph is started,
		/// the filter will start to receive samples.
		/// </summary>
		/// <param name='requestor'>
		/// Requestor.
		/// </param>
		void SubscribeToOutput( IDigestFilter requestor);

		/// <summary>
		/// Unsubscribes from receiving any new output.
		/// </summary>
		/// <param name='requestor'>
		/// Requestor.
		/// </param>
		void UnsubscribeToOutput( IDigestFilter requestor);
	}
}

